使用ZeBu与Coverity缩短芯片软件开发周期
使用 ZeBu 与 Coverity 缩短芯片软件开发周期
会议: SNUG China 2018
作者: 孙海年 (sun_hainian@dahuatech.com), 郭殿武 (guo_dianwu@dahuatech.com)
公司: 浙江大华技术 Dahua Technology
日期: 2018年5月20日
页数: 18
图片数: 50
源文件: SNUG_CN_Dorso_Untitled_paper_3.pdf
第1页 — 标题页
SNUG 2018
使用 ZeBu 与 Coverity 缩短芯片软件开发周期的解决方案
Accelerating Software Development in SoC with ZeBu and Coverity
演讲者: - 孙海年 (sun_hainian@dahuatech.com) - 郭殿武 (guo_dianwu@dahuatech.com)
浙江大华技术股份有限公司 2018年5月20日, SNUG China
第2页 — 关于大华
介绍浙江大华技术股份有限公司的基本情况。
第3页 — 目录
主要内容: 1. 摘要 2. 背景 3. 方案 4. 总结
第4页 — 摘要
从SoC 系统级芯片芯片开始研发到基于该芯片解决方案的产品发布,软件开发周期在其中所占的比重越来越大,而软件开发进度客观上受限于如下三个方面:
第一,产品级应用软件开发的启动时间依赖于是否有样片。
第二,RTL仿真速度过慢,全芯片级别的验证有裁剪或者发现问题比较滞后,导致部分问题漏到FPGA原型验证环节。而在裁剪版的FPGA原型板上的软件开发和调试中,设计缺陷的debug周期,极端情况以月来计算。
第三,软件代码本身过度依赖软件测试人员,很多问题的发现比较滞后,而且debug的周期也较长,缺少对C/C++等软件代码的静态分析工具。
以上三个方面的影响与SoC芯片规模成正比,本文介绍如何使用ZeBu与Coverity 静态分析来解决以上问题。
关键字: SoC 产品软件 ZeBu Coverity
第5页 — Abstract (英文摘要)
Software development takes more and more time in the whole life-period of product development, which starting from SoC R&D to the product first release. The process of our software development is limited by three factors listed below.
Firstly, the starting time of the application software developments depends on whether the chip after taped out comes back.
Secondly, due to the slow RTL simulation, lots of software testing will be implemented in FPGA prototype board but logic debugging will be a remarkable problem. In some extreme cases we have to meet the fact like that the team needs one month for locating a bug.
Thirdly, the quality assurance of software code excessively relies on software testing engineer, which makes that the cycle of debugging becomes longer and some serious problems will be found in the later period of product developing. Unfortunately, we don't have static analysis tools for software language like C/C++.
The more complexity of SoC chip, the more influences caused by these problems. Therefore, this paper will introduce the method about how to use ZeBu and Coverity to solve these problems.
Keywords: SoC Product Software ZeBu Coverity
第6页 — 背景:三大痛点
![三大痛点图示]
当前芯片软件开发面临的三个核心痛点,引出验证加速、软件开发与静态分析三条解决路径。
第7页 — 背景详述
痛点一:验证只能靠Simulator?
- 仿真过慢仅覆盖裁剪版的芯片启动流程,有漏洞 - 大规模SoC性能仿真迭代1次需2周时间,耗不起痛点二:软件开发只能靠FPGA?
- 系统配置与芯片不一致,样片测试问题多多 - 原型与芯片不能等同,性能验证主要靠推理痛点三:软件查错只能靠动态测试?
- 很多隐含问题的发现往往比较滞后,代价高 - 大量的低级问题依赖测试人员发现,迭代多三个痛点对应三个工具方向:Coverity(静态分析)、ZeBu(硬件仿真)、VCS(仿真加速)。
第8页 — 方案总览:痛定思痛
![方案总览图]
基于三个痛点的分析,提出对应的三套解决方案。
第9页 — 三大方案
针对前述三个痛点,制定了以下三套解决方案:
1. 验证加速方案 — 基于ZeBu进行仿真加速 2. 软件开发方案 — 基于ZeBu进行硅前软件开发 3. 静态分析方案 — 基于Coverity进行代码静态分析
第10页 — 验证加速方案
超大规模芯片仿真速度,从步行到高铁(1个用例从6天到2小时)!
ZeBu验证环境架构
验证环境中包含以下关键组件: - AXI_if / AXI_vif: AXI总线接口 - CHIP (DUT): 被测芯片设计 - CPU (master) / IU (master) / OU (master): 主机模块 - DDRC (slave): DDR控制器从设备 - DDR PHY / DDR MODEL: DDR物理层和模型 - PLL / CLK GEN / RST GEN: 时钟与复位生成 - CPU_task: CPU任务驱动 - IU_driver (zebu_driver) / OU_checker (zebu_checker): ZeBu驱动与检查器 - IU_trc_process / OU_trc_process: 跟踪处理模块 - ram_backdoor / ddr_backdoor: 后门访问机制 - xtor (Transactor): 总线转换器 - UVM_TEST / HVL_TOP / HDL_TOP: 验证环境层级 - PATTERN: 测试用例 - IU.trc / OU.trc / IU.dat / OU.dat: 配置与数据文件 - ZeBu Server-3 + Host PC: 硬件仿真平台
关键设计: 绿框部分表示Simulation与Emulation平台实现方式不一致,但是需要封装成相同的接口。
数据文件说明:
- .trc: 寄存器配置文件,由subsys验证平台提供
- .dat: OU.dat由subsys验证平台提供作为golden参考
第11页 — 软件开发方案
FPGA所做不到的,Emulator可以做,万事俱备只欠样片!
ZeBu软件开发环境架构
芯片侧 (CHIP): - CLK GEN / RST GEN: 时钟与复位生成 - PLL: 锁相环 - DDR PHY / DDRC: DDR控制器与物理层 - DUT核心模块 - 外设接口: UART, GMAC, MIPI CSI-2
ZeBu仿真环境 (ZeBu Server-3 + Host PC): - DDR MODEL: DDR存储器模型(参数可配置,支持后门方式访问) - GMAC transactor: 以太网MAC转换器 - UART transactor: 串口转换器 - MIPI transactor: MIPI接口转换器 - FLASH MODEL: 闪存模型
Test PC侧: - NIC Card: 网卡 - Virtual Terminal: 虚拟终端 - SrcFile: 源文件 - ImgFile: 镜像文件 - GMAC C-IF: GMAC C语言接口 - UART C-IF: UART C语言接口 - MIPI C-IF: MIPI C语言接口
ZeBu对FPGA的优势
| 序号 | 优势 |
| 1 | PLL模拟实际芯片,时钟初始化配置完全一致,样片无需调试直接OK |
| 2 | DDR相关与芯片行为一致,基于ZeBu的测试等同于芯片 |
| 3 | 单板支持60MG且可级联,无需对系统进行分割,支持全系统的软件开发和测试 |
ZeBu对FPGA的劣势
| 序号 | 劣势 |
| 1 | 速度慢,系统启动是FPGA的1/50 |
快速启动策略说明
- DDR MODEL: 在系统快速启动策略中,省去从FLASH中读入DDR的过程,将文件包解压缩后直接导入到DDR MODEL。 - FLASH MODEL: 在芯片FLASH启动模式中,将ImgFile直接导入到FLASH MODEL中即可。烧录到FLASH上的系统压缩程序,在快速启动策略中则无需压缩,直接后门导入DDR即可。 - ImgFile/SrcFile: 将sensor数据采集保存到文件,作为raw数据源。
第12页 — 静态分析方案
如果没有静态分析检查,这个世界都是灰色的!
芯片开发流程(部分)
RTL unit testing → RTL verification
↓
StaticAnalysis (nLint / CDC / etc.)
软件开发流程(部分)
C/C++ unit testing → C/C++ test
↓
StaticAnalysis (Coverity, etc.)
没有nLint/CDC,会发生什么?
- 大量的低级错误交付到验证人员 - 设计人员与验证人员之间大量的迭代 - CDC类似问题,验证无法覆盖,风险高 - 芯片质量不安全不可靠有了Coverity,意味着什么?
- 交付到测试人员的代码低级错误大大减少 - 开发人员与测试人员之前的迭代次数减少 - C/C++/Java等代码质量提高,风险降低 - 产品更加安全可靠核心理念: 在RTL设计中,nLint/CDC等静态检查已经是标准流程;同样地,Coverity应为软件代码提供同等级别的静态分析保障。
第13页 — 静态分析方案(续):项目统计数据
仅仅是一个项目的软件代码静态分析统计
- 该项目 C/C++ 代码行: 10M+ - 静态缺陷分为: 高/中/低风险 - 其中高风险缺陷共1329个! - 高风险缺陷中,包含: - 资源泄露 - 内存损坏 - 内存非法访问 - 未初始化变量
这一数据充分说明了静态分析在大型软件项目中的必要性——仅一个项目就存在超过1300个高风险缺陷,如果不通过静态分析及时发现,将在测试和发布后带来巨大的修复成本。
第14页 — 静态分析方案(续):缺陷检查与状态修改(一)
Coverity工具实操演示 — 第一部分: - 缺陷检查流程展示 - 缺陷状态管理(如:新建、确认、已修复、忽略) - 如何在开发流程中集成Coverity
第15页 — 静态分析方案(续):缺陷检查与状态修改(二)
Coverity工具实操演示 — 第二部分: - 缺陷分类与优先级排序 - 代码审查流程整合 - 静态分析与CI/CD流水线的集成
第16页 — 总结
没有解决不了的问题,只是未找到好的方法。
面对SoC软件开发周期中的三大痛点,浙江大华通过引入Synopsys的ZeBu硬件仿真器和Coverity静态分析工具,系统性地解决了验证速度慢、硅前软件开发受限、软件质量难以把控的问题。
第17页 — 总结(续):三方案汇总
由3大问题引入3套解决方案
仿真加速方案
- VCS与ZeBu验证环境和用例皆相同,无需维护2套环境 - ZeBu相对于VCS的加速比: 50+(1个用例从6天缩短到2小时)软件开发方案
- Emulator与FPGA有效互补,短期谁也不能完全替代谁 - 系统启动流程,完全模拟真实芯片 - 软件测试流程,跳过启动过程,提高效率静态分析方案
- 代码静态分析对质量的意义:及早发现隐性问题 - 使用Coverity的项目数据展示:10M+代码行,发现1329个高风险缺陷 - Coverity实操举例,简单易用第18页 — Thank You
致谢页面
感谢SNUG China 2018提供交流平台。
图片索引
共 50 张图片,存放于 SNUG_CN_Dorso_Untitled_paper_3_images/ 目录。
| 图片编号 | 所在页码 | 内容描述 |
| 1 | 第1页 | SNUG 2018标题页 — 演讲标题与作者信息 |
| 2 | 第2页 | 关于大华 — 公司介绍 |
| 3 | 第3页 | 目录页 — 主要内容概览 |
| 4 | 第4页 | 摘要页 — 三大问题概述图示 |
| 5 | 第5页 | Abstract (英文摘要) — 背景图示 |
| 6 | 第6页 | 背景 — 三大痛点总览图 |
| 7 | 第7页 | 背景详述 — 三个痛点的展开分析 |
| 8 | 第8页 | 方案总览 — 痛定思痛的解决思路 |
| 9 | 第9页 | 三大解决方案总览图 |
| 10 | 第10页 | 验证加速方案架构图 — ZeBu仿真环境架构 |
| 11 | 第10页 | 数据文件说明 — .trc和.dat文件 |
| 12 | 第11页 | 软件开发方案架构图 — ZeBu + 外设仿真 |
| 13 | 第11页 | ZeBu vs FPGA 对比表 |
| 14 | 第12页 | 静态分析方案 — 芯片/软件开发流程对比 |
| 15 | 第12页 | nLint/CDC vs Coverity 对比图 |
| 16 | 第13页 | 静态分析统计数据图表 — 10M+行代码分析 |
| 17 | 第13页 | 高风险缺陷分布饼图 (1329个缺陷) |
| 18 | 第14页 | 缺陷检查与状态修改操作界面 — 第一部分 |
| 19 | 第14页 | Coverity缺陷管理流程图示 |
| 20 | 第15页 | 缺陷检查与状态修改操作界面 — 第二部分 |
| 21 | 第15页 | CI/CD集成Coverity流水线图 |
| 22 | 第16页 | 总结页 — 核心结论 |
| 23 | 第17页 | 三大方案总结对比图 |
| 24 | 第17页 | ZeBu加速比数据图 (50x) |
| 25 | 第18页 | Thank You 致谢页 |
| 26-50 | 各页 | 其余图表、架构图、数据图、UI界面截图等(共50张) |
*本文由孙海年、郭殿武在SNUG China 2018发表,介绍了浙江大华技术股份有限公司使用Synopsys ZeBu硬件仿真器与Coverity静态分析工具加速芯片软件开发周期的实践经验。*